﻿Imports CapaLogica.CL.Grupo
Imports CapaLogica.CL.Carrera
Imports CapaLogica
Imports CapaLogica.CL.Usuario

Public Class frmAdministrarGrupo
    Public Sub New(ByRef ptitulo As String)

        ' Llamada necesaria para el diseñador.
        InitializeComponent()
        prepararPantalla(ptitulo)

    End Sub

    Private Sub prepararPantalla(ByRef pencabezado As String)
        Me.Text = pencabezado

    End Sub

    Private Sub cambiarElementosDeListas(ByRef plistaOrigen As ListBox, ByRef plistaDestino As ListBox)
        For n = 0 To plistaOrigen.SelectedItems.Count - 1
            plistaDestino.Items.Add(plistaOrigen.SelectedItems.Item(n))
        Next

        For n = 0 To plistaOrigen.SelectedItems.Count - 1
            plistaOrigen.Items.Remove(plistaOrigen.SelectedItems.Item(0))
        Next
    End Sub


    Private Function validar() As Boolean
        If cbxCursos.SelectedIndex < 1 Then
            MsgBox("Debe seleccionar el curso del grupo.", MsgBoxStyle.Exclamation, "Error")
            Return False
        ElseIf lbxSeleccionados.Items.Count = 0 Then
            MsgBox("Debe seleccionar a menos un profesor para el grupo.", MsgBoxStyle.Exclamation, "Error")
            Return False
        ElseIf nudNumGrupo.Value = 0 Then
            MsgBox("Debe seleccionar el número de grupo.", MsgBoxStyle.Exclamation, "Error")
            Return False
        End If

        Return True
    End Function


    Private Sub refrescar()

        nudNumGrupo.Value = 0

        limpiarComboBox(cbxCursos)
        limpiarListBox(lbxProfesores)
        limpiarListBox(lbxSeleccionados)
        cargarValores()

    End Sub

    Private Sub tsbCancelar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Me.Close()
    End Sub

    Private Sub btnAsociar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAsociar.Click
        If lbxProfesores.SelectedIndex > -1 Then
            cambiarElementosDeListas(lbxProfesores, lbxSeleccionados)

        Else
            MsgBox("Debe seleccionar al menos un profesor para cambiarlo de lista.", MsgBoxStyle.Exclamation, "Error")
        End If
    End Sub

    Private Sub btnDesasociar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDesasociar.Click
        If lbxSeleccionados.SelectedIndex > -1 Then
            cambiarElementosDeListas(lbxSeleccionados, lbxProfesores)
        Else
            MsgBox("Debe seleccionar al menos un profesor para cambiarlo de lista.", MsgBoxStyle.Exclamation, "Error")
        End If
    End Sub

    Private Sub tsbCrearGrupo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsbCrearGrupo.Click

        If validar() Then
            Dim button As DialogResult = MessageBox.Show("¿Desea crear un nuevo Grupo?",
                                                                          Me.Text, MessageBoxButtons.YesNoCancel, MessageBoxIcon.Information)
            If button = DialogResult.Yes Then
                Try
                    GestorGrupo.crearGrupo(obtenerIdComboBox(cbxCursos),
                                           nudNumGrupo.Value, obtenerIdsDeListBox(lbxSeleccionados))

                    MsgBox("¡El grupo ha sido creado!", MsgBoxStyle.Information, "Grupo")
                    refrescar()
                    cargarValores()

                Catch ex As Exception
                    MsgBox(ex.Message, MsgBoxStyle.Exclamation, "Error")
                End Try

            Else
                MsgBox("¡El grupo no ha sido creado!", MsgBoxStyle.Information, "Grupo")

            End If
        End If



    End Sub

    Private Sub tsbRefrescar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsbRefrescar.Click
        refrescar()
    End Sub


    Private Sub frmAdministrarGrupo_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        cargarValores()
    End Sub


    Private Sub cargarValores()
        Try
            llenarComoBox(cbxCarreras, GestorCarrera.listarTodasLasCarreras(), "--Seleccione la Carrera--")
            llenarLista(lbxProfesores, GestorUsuario.listarTodosLosProfesores())
            setearLista(lbxSeleccionados)
            seterarComboBox(cbxCursos)

        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.Exclamation, "Error")
        End Try
    End Sub

    Private Sub cbxCarreras_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbxCarreras.SelectedIndexChanged
        Try
            Dim indice As Integer = cbxCarreras.SelectedIndex
            If indice > 0 Then
                llenarComoBox(cbxCursos, CapaLogica.GestorCurso.listarCursosDeCarrera(obtenerIdComboBox(cbxCarreras)), "--Seleccione el Curso--")
            End If

        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.Exclamation, "Error")
        End Try
    End Sub


    Private Sub tsbCancelar_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsbCancelar.Click
        Me.Dispose()
    End Sub
End Class